import request from '@/utils/request'

const BASE_URL = '/dk/role-datasets'

/**
 * 授予角色数据集访问权限
 * @param {Object} data - 权限数据
 * @param {string|number} data.role_id - 角色ID
 * @param {string|number} data.dataset_id - 数据集ID
 * @param {string} [data.expires_at] - 过期时间，ISO格式
 * @returns {Promise} - 返回授权结果
 */
export function grantRoleDatasetAccess(data) {
  return request({
    url: `${BASE_URL}/grant`,
    method: 'post',
    data,
  })
}

/**
 * 撤销角色数据集访问权限
 * @param {string|number} accessId - 访问权限ID
 * @returns {Promise} - 返回撤销结果
 */
export function revokeRoleDatasetAccess(accessId) {
  return request({
    url: `${BASE_URL}/${accessId}`,
    method: 'delete',
  })
}

/**
 * 批量授予角色数据集访问权限
 * @param {Object} data - 批量授权数据
 * @param {Array<string|number>} data.role_ids - 角色ID列表
 * @param {Array<string|number>} data.dataset_ids - 数据集ID列表
 * @param {string} [data.expires_at] - 过期时间，ISO格式
 * @returns {Promise} - 返回批量授权结果
 */
export function batchGrantRoleDatasetAccess(data) {
  return request({
    url: `${BASE_URL}/batch-grant`,
    method: 'post',
    data,
  })
}

/**
 * 获取角色可访问的数据集列表
 * @param {string|number} roleId - 角色ID
 * @returns {Promise} - 返回角色可访问的数据集列表
 */
export function getRoleDatasets(roleId) {
  return request({
    url: `${BASE_URL}/by-role/${roleId}`,
    method: 'get',
  })
}

/**
 * 获取可访问数据集的角色列表
 * @param {string|number} datasetId - 数据集ID
 * @returns {Promise} - 返回可访问数据集的角色列表
 */
export function getDatasetRoles(datasetId) {
  return request({
    url: `${BASE_URL}/by-dataset/${datasetId}`,
    method: 'get',
  })
}

/**
 * 检查用户访问权限
 * @param {string|number} userId - 用户ID
 * @param {string|number} datasetId - 数据集ID
 * @returns {Promise} - 返回权限检查结果
 */
export function checkDatasetAccess(userId, datasetId) {
  return request({
    url: `${BASE_URL}/check-access`,
    method: 'get',
    params: {
      user_id: userId,
      dataset_id: datasetId,
    },
  })
}
